home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-05-04 | 47.8 KB | 1,216 lines |
- Newsgroups: comp.lang.perl,comp.answers,news.answers
- From: Tim.Bunce@ig.co.uk (Tim Bunce)
- Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!gatech!swrinde!pipex!peernews.demon.co.uk!ig.co.uk!news
- Subject: comp.lang.perl The Perl 5 Module List (Reusable Software)
- Followup-To: comp.lang.perl
- Keywords: FAQ Perl Module Software Reuse
- Supersedes: <perl-faq/module-list-1-797486403@ig.co.uk>
- Reply-To: Tim Bunce <Tim.Bunce@ig.co.uk>
- Posting-Frequency: bi-weekly
- Approved: news-answers-request@MIT.EDU
- Expires: Tue, 30 May 1995 04:00:01 GMT
- Organisation: Paul Ingram Group, Software Systems, +44 483 424424
- X-Posting-Host: ignite.demon.co.uk
- Date: Tue, 25 Apr 1995 04:00:03 +0000
- Message-ID: <perl-faq/module-list-1-798782401@ig.co.uk>
- Sender: usenet@demon.co.uk
- Lines: 1196
- Xref: senator-bedfellow.mit.edu comp.lang.perl:48647 comp.answers:11450 news.answers:42660
-
- Posted-By: auto-faq 3.1.1.2
- Archive-name: perl-faq/module-list
-
-
- The Perl 5 Module List Maintained by Tim Bunce
- ---------------------- <Tim.Bunce@ig.co.uk>
- $Revision: 2.5 $
- Contents
-
- Introduction
- Playing Your Part
- How To Get an More Recent Copy
- Editorial Information
-
- Part 1 - Modules: Creation, Use and Abuse
-
- 1) Perl 5 Module Terminology
- 2) Guidelines for Module Creation
- 3) Guidelines for Converting Perl 4 Library Scripts into Modules
- 4) Guidelines for Reusing Application Code
-
- Part 2 - The Perl 5 Module List
-
- 1) Module Listing Format
- 2) Perl Core Modules and Perl Language Extensions
- 3) Development Support
- 4) Operating System Interfaces
- 5) Networking, Device Control (modems) and InterProcess Communication
- 6) Data Types and Data Type Utilities
- 7) Database Interfaces
- 8) User Interfaces
- 9) Interfaces to / Emulations of Other Programming Languages
- 10) File Names, File Systems, File Locking and File Handles
- 11) Text Processing, Parsing and Searching
- 12) Option, Argument and Parameter Processing
- 13) Internationalization and Locale
- 14) Security and Encryption
- 15) World Wide Web, HTML, HTTP, CGI, MIME
- 16) Server and Daemon Utilities
- 17) Archiving and Compression
- 18)+ Image, Pixmap and Bitmap Manipulation
- 19) Miscellaneous Interfaces to Other Software Systems
-
- Part 3 - Big Projects Registry
-
- 1) Introduction
- 2) Perl Compiler
- 3) Multi-threading
- 4) Safe Perl
- 5) Object Management Group Interface Definition Language
-
- Part 4 - Who's Who and What's Where
-
- 1) Information / Contact Reference Details
- 2) Perl Frequently Asked Questions (FAQ) Files
- 3) Perl Archives
-
-
- Key: '+' indicates a new item or section,
- '!' indicates a changed item or section.
-
-
- =======================================================================
-
- Introduction
-
- This document is a semi-formal list of Perl 5 Modules. The Perl 4
- concept of packages has been extended in Perl 5 and a new standardised
- form of reusable software component has been defined: the Module.
-
- Perl 5 Modules typically conform to certain guidelines which make them
- easier to use, reuse, integrate and extend.
-
- This list will posted to comp.lang.perl on a semi-regular basis.
- It has two key aims:
-
- 1. FOR DEVELOPERS: To change duplication of effort into cooperation.
-
- 2. FOR USERS: To quickly locate existing software which can be reused.
-
- This list includes the Perl 5 standard modules, other completed modules,
- work-in-progress modules and would-be-nice-to-have ideas for modules.
- It also includes guidelines for those wishing to create new modules
- including how to name them.
-
-
- Playing Your Part
-
- Perl is a huge collaborative effort. Everyone who uses perl is
- benefiting from the contributions of many hundreds, maybe thousands, of
- people. How much time has perl saved you since you started using it?
-
- Do you have any modules you could share with others? For example, you
- may have some perl4 scripts from which generally useful, and reusable,
- modules could be extracted. There may be many people who would find
- your work very useful. Please play you part and contribute to the Perl
- community where you can. [ end of sermon :-]
-
- Help save the world! Please submit new entries and updates to me so I
- can keep this list up-to-date. I would prefer changes to be submitted
- as context diff's (or just plain diff if your diff does not have a
- context diff option) by email to Tim.Bunce@ig.co.uk. No tabs please.
-
-
- How To Get a More Recent Copy
-
- At the time of writing, this Module List is posted manually by me to
- comp.lang.perl on a semi-regular basis (approximately bi-weekly) with a
- long expiry time (over a month). The first place to look for a more
- recent copy is therefore you own Usenet comp.lang.perl spool area.
- I am currently seeking approval for regular posting to *.answers and
- archiving on rtfm.mit.edu.
-
- You should be able to get a copy from one of these places:
- ftp://ftp.demon.co.uk/pub/perl/db/mod/module-list.txt
- ftp://ftp.icnet.uk/icrf-public/biu/perlmods/modules.list
- ftp://ftp.wpi.edu/perl5/Modules/module_list.txt
- (please let me know about any others)
-
-
- Editorial Information
-
- This document is Copyright (c) 1995 by Tim Bunce. All rights reserved.
- Permission to distribute this document, in full or part, via electronic
- means (emailed, posted or archived) or printed copy is granted
- providing that no charges are involved, reasonable attempt is made to
- use the most current version, and all credits and copyright notices are
- retained. Requests for other distribution rights, including
- incorporation in commercial products, such as books, magazine articles,
- or CD-ROMs should be made to Tim.Bunce@ig.co.uk.
-
- Disclaimer: The content of this document is simply a collection of
- information gathered from many sources with little or no checking.
- There are NO warranties with regard to this information or its use.
-
-
-
- =======================================================================
-
-
- Part 1 - Modules: Creation, Use and Abuse
- =========================================
-
-
- 1) Perl 5 Module Terminology (a larry-terminology-mini-tutorial)
- -------------------------
-
- Perl 5 implements a class using a package, but the presence of a
- package doesn't imply the presence of a class. A package is just a
- namespace. A class is a package that provides subroutines that can be
- used as methods. A method is just a subroutine that expects, as its
- first argument, either the name of a package (for "static" methods),
- or a reference to something (for "virtual" methods).
-
- A module is a file that (by convention) provides a class of the same
- name (sans the .pm), plus an import method in that class that can be
- called to fetch exported symbols. This module may implement some of
- its methods by loading dynamic C or C++ objects, but that should be
- totally transparent to the user of the module. Likewise, the module
- might set up an AUTOLOAD function to slurp in subroutine definitions on
- demand, but this is also transparent. Only the .pm file is required to
- exist.
-
-
- 2) Guidelines for Module Creation
- ------------------------------
-
- 2.1 Do similar modules already exist in some form?
-
- If so, please try to reuse the existing modules either in whole or
- by inheriting useful features into a new class. If this is not
- practical try to get together with the module authors to work on
- extending or enhancing the functionality of the existing modules.
- A perfect example is the plethora of packages in perl4 for dealing
- with command line options.
-
- If you are writing a module to expand an already existing set of
- modules, please coordinate with the author of the package. It
- helps if you follow the same naming scheme and module interaction
- scheme as the original author.
-
-
- 2.2 Try to design the new module to be easy to extend and reuse.
-
- Use blessed references. Use the two argument form of bless to bless
- into the class name given as the first parameter of the constructor,
- e.g., sub new { my($class) = @_; return bless {}, $class; }
-
- Pass arrays as references so more parameters can be added later
- (it's also faster). Split large functions into smaller more flexible
- ones. Convert functions into methods where appropriate.
- Inherit methods from other modules if appropriate.
-
- Avoid class name tests like: die "Invalid" unless ref $ref eq 'FOO'.
- Generally you can delete the "eq 'FOO'" part with no harm at all.
- Let the objects look after themselves! Generally, avoid hardwired
- class names as far as possible.
-
- Avoid $r->Class::func() where using @ISA=qw(... Class ...) and
- $r->func() would work (see perlbot man page for more details).
-
- Use autosplit so little used or newly added functions won't be a
- burden to programs which don't use them. Add test functions to
- the module after __END__ either using AutoSplit or by saying:
- eval join('',<main::DATA>) || die $@ unless caller();
-
- Does your module pass the 'empty sub-class' test? If you say
- "@SUBCLASS::ISA = qw(YOURCLASS);" your applications should be able
- to use SUBCLASS in exactly the same way as YOURCLASS. For example,
- does your application still work if you change: $obj = new YOURCLASS;
- into: $obj = new SUBCLASS; ?
-
- + Avoid keeping any state information in your packages. It makes it
- difficult for multiple other packages to use yours. Keep state
- information in objects.
-
- Always use -w. Try to "use strict;" (or "use strict qw(...);").
- Remember that you can add "no strict qw(...);" to individual blocks
- of code which need less strictness. Always use -w. Always use -w!
- Follow the guidelines in the perlstyle(1) manual.
-
-
- 2.3 Select what to export.
-
- Do NOT export method names!
- Do NOT export anything else by default without a good reason!
-
- Exports pollute the namespace of the module user. If you must
- export try to use @EXPORT_OK in preference to @EXPORT and avoid
- short or common names to reduce the risk of name clashes.
-
- Generally anything not exported is still accessible from outside the
- module using the ModuleName::item_name (or $blessed_ref->method)
- syntax. By convention you can use a leading underscore on names to
- informally indicate that they are 'internal' and not for public use.
-
- (It is actually possible to get private functions by saying:
- my $subref = sub { ... }; &$subref; But there's no way to call that
- directly as a method, since a method must have a name in the symbol
- table.)
-
- As a general rule, if the module is trying to be object oriented
- then export nothing. If it's just a collection of functions then
- @EXPORT_OK anything but use @EXPORT with caution.
-
-
- 2.4 Select a name for the module.
-
- This name should be as descriptive, accurate and complete as possible.
- Avoid any risk of ambiguity. Always try to use two or more whole words.
- Please use nested module names to group or categorise a module.
-
- Having 57 modules all called Sort will not make life easy for anyone
- (though having 23 called Sort::Quick is only marginally better :-).
- Imagine someone trying to install your module alongside many others.
- If in any doubt ask for suggestions in comp.lang.perl.
-
- If you are developing a suite of related modules/classes it's good
- practice to use nested classes with a common prefix as this will
- avoid namespace clashes. For example: Xyz::Control, Xyz::View,
- Xyz::Model etc. Use the modules in this list as a naming guide.
-
- If adding a new module to a set, follow the original author's
- standards for naming modules and the interface to methods in
- those modules.
-
- To be portable each component of a module name should be limited to
- 11 characters. If it might be used on DOS then try to ensure each is
- unique in the first 8 characters. Nested modules make this easier.
-
-
- 2.5 Have you got it right?
-
- How do you know that you've made the right decisions? Have you
- picked an interface design that will cause problems later? Have
- you picked the most appropriate name? Do you have any questions?
-
- The best way to know for sure, and pick up many helpful suggestions,
- is to ask someone who knows. Comp.lang.perl is read by just about
- all the people who develop modules and it's the best place to ask.
-
- All you need to do is post a short summary of the module, its
- purpose and interfaces. A few lines on each of the main methods is
- probably enough. (If you post the whole module it might be ignored
- by busy people - generally the very people you want to read it!)
-
- Don't worry about posting if you can't say when the module will be
- ready - just say so in the message. It might be worth inviting
- others to help you, they may be able to complete it for you!
-
-
- 2.6 README and other Additional Files.
-
- It's well known that software developers usually fully document the
- software they write. If, however, the world is in urgent need of
- your software and there is not enough time to write the full
- documentation please at least provide a README file containing:
-
- A description of the module/package/extension etc.
- A copyright notice - see below.
- Prerequisites - what else you may need to have.
- How to build it - possible changes to Makefile.PL etc.
- How to install it.
- Recent changes in this release, especially incompatibilities
- Changes / enhancements you plan to make in the future.
-
- If the README file seems to be getting too large you may wish to
- split out some of the sections into separate files: INSTALL,
- Copying, ToDo etc.
-
-
- 2.7 Adding a Copyright Notice.
-
- How you choose to licence your work is a personal decision.
- The general mechanism is to assert your Copyright and then make
- a declaration of how others may copy/use/modify your work.
-
- Perl, for example, is supplied with two types of licence: The GNU
- GPL and The Artistic License (see the files README, Copying and
- Artistic). Larry has good reasons for NOT just using the GNU GPL.
-
- My personal recommendation, out of respect for Larry, Perl and the
- perl community at large is to simply state something like:
-
- Copyright (c) 1995 Your Name. All rights reserved.
- This program is free software; you can redistribute it and/or
- modify it under the same terms as Perl itself.
-
- This statement should at least appear in the README file. You may
- also wish to include it in a Copying file and your source files.
-
-
- 2.8 Give the module a version/issue/release number.
-
- Add a function or method to retrieve the number. Use the number in
- announcements and archive file names when releasing the module
- (ModuleName-1.02.tar.Z). See ExtUtils::MakeMaker.pm for details.
- It's a good idea to use two digits after the decimal point.
-
-
- 2.9 How to release and distribute a module.
-
- It's good idea to post an announcement of the availability of your
- module (or the module itself if small) to the comp.lang.perl
- Usenet newsgroup. This will at least ensure very wide once-off
- distribution.
-
- If possible you should place the module into a major ftp archive and
- include details of it's location in your announcement.
-
- Some notes about ftp archives: Please use a long descriptive file
- name which includes the version number. Most incoming directories
- will not be readable/listable, i.e., you won't be able to see your
- file after uploading it. Send your email notification message as
- soon as possible after uploading else your file may get deleted
- automatically. Allow time for the file to be processed and/or
- check the file has been processed before announcing its location.
-
- + Please remember to send me an updated entry for the Module list!
-
-
- 2.10 Take care when changing a released module.
-
- Always strive to remain compatible with previous released versions
- (see 2.2 above) Otherwise try to add a mechanism to revert to the
- old behaviour.
-
-
-
- 3) Guidelines for Converting Perl 4 Library Scripts into Modules
- -------------------------------------------------------------
-
- 3.1 There is no requirement to convert anything.
-
- If it ain't broke, don't fix it! Perl 4 library scripts should
- continue to work with no problems. You may need to make some minor
- changes (like escaping non-array @'s in double quoted strings) but
- there is no need to convert a .pl file into a Module for just that.
-
-
- 3.2 Consider the implications.
-
- All the perl applications which make use of the script will need to
- be changed (slightly) if the script is converted into a module. Is
- it worth it unless you plan to make other changes at the same time?
-
-
- 3.3 Make the most of the opportunity.
-
- If you are going to convert the script to a module you can use the
- opportunity to redesign the interface. The 'Guidelines for Module
- Creation' above include many of the issues you should consider.
-
-
- 3.4 The pl2pm utility will get you started.
-
- This utility will read *.pl files (given as parameters) and write
- corresponding *.pm files. The pl2pm utilities does the following:
- - Adds the standard Module prologue lines
- - Converts package specifiers from ' to ::
- - Converts die(...) to croak(...)
- - Several other minor changes
- Being a mechanical process pl2pm is not bullet proof. The converted
- code will need careful checking, especially any package statements.
- Don't delete the original .pl file till the new .pm one works!
-
-
-
- 4) Guidelines for Reusing Application Code
- ---------------------------------------
-
- 4.1 Complete applications rarely belong in the Perl Module Library.
-
- 4.2 Many applications contain some perl code which could be reused.
- Help save the world! Share your code in a form that makes it easy
- to reuse.
-
- 4.3 Break-out the reusable code into one or more separate module files.
-
- 4.4 Take the opportunity to reconsider and redesign the interfaces.
-
- 4.5 In some cases the 'application' can then be reduced to a small
- fragment of code built on top of the reusable modules. In these cases
- the application could invoked as:
- perl -e 'use Module::Name; method(@ARGV)' ...
- or perl -mModule::Name ... (in perl5.001?)
-
-
-
- =======================================================================
-
-
- Part 2 - The Perl 5 Module List
- ===============================
-
-
- The remainder of this document is divided up into sections. Each
- section deals with a particular topic and lists all known modules
- related to that topic. Modules are only listed in one section so
- check all sections that might related to your particular needs.
-
- All the information corresponds to the latest updates I have received.
- I don't record the version number or release dates of the listed
- Modules. Nor do I record the locations of these Modules. Consult the
- contact, try the usual perl archive sites or ask in comp.lang.perl.
- Please do *not* ask me directly, I simply don't have the time. Sorry.
-
-
- 1) Module Listing Format
-
- Each Module listing is very short. The main goal is to simply publish
- the existence of the modules, or ideas for modules, and enough contact
- information for you to find out more. Each listing includes some
- characters which convey (approximate) basic status information.
-
- For example:
-
- Name DSLI Description Info
- ------------- ---- -------------------------------------------- -----
- Fcntl Sdcf Defines fcntl() constants (see File::Lock) JHI
-
- Where the 'DSLI' characters have the following meanings:
-
- D - Development Stage (Note: *NO* *IMPLIED* *TIMESCALES*!):
- i - Idea, listed to gain consensus or as a placeholder
- c - under construction but pre-alpha (not yet released)
- a/b - Alpha/Beta testing
- R - Released
- M - Mature (no rigorous definition)
- S - Standard, supplied with Perl 5
-
- S - Support Level:
- m - Mailing-list
- d - Developer
- u - Usenet newsgroup comp.lang.perl
- n - None known, try comp.lang.perl
-
- L - Language Used:
- p - Perl-only, no compiler needed, should be platform independent
- c - C and perl, a C compiler will be needed
- + - C++ and perl, a C++ compiler will be needed
- o - perl and another language other than C or C++
-
- I - Interface Style
- f - plain Functions, no references used
- r - some use of unblessed References or ties
- O - Object oriented using blessed references and/or inheritance
-
- Where letters are missing they can usually be inferred from the
- others. For example 'i' implies 'id', 'S' implies 'Su'.
-
- The Info column gives a contact reference 'tag'. Lookup this tag in the
- "Information / Contact Reference Details" section in Pert 3 of this
- document. If no contact is given always try asking in comp.lang.perl.
-
- Most Modules are nested in categories such as IPC::Open2 and IPC::Open3.
- These are shown as 'IPC::' on one line then each module listed below
- with a '::' prefix.
-
-
- Ideas For Adoption
-
- Modules listed as in the 'i' Development Stage with no contact
- reference are ideas without an owner. Feel free to 'adopt' these but
- please let me know so that I can update the list and thus inform anyone
- else who might be interested. Adoption simply means that you either
- hope to implement the module one day or would like to cooperate with
- anyone else who might be interested in implementing it.
-
-
- Cooperation
-
- Similarly, if an idea that interests you has been adopted by someone
- please contact them so you can share ideas. Just because an idea has
- been adopted does NOT imply that it's going to be implemented. Just
- because a module is listed and being implemented does NOT mean it'll
- get finised. Waiting silently in the hope that the Module will appear
- one day is unlikely to be fruitful! Offer to help. Cooperate. Pool your
- efforts. Go on, try it!
-
- The same applies to modules in all states. Most modules are developed
- in limited spare time. If you're interested in a module don't just wait
- for it to happen, offer to help!
-
- Module developers should feel free to announce incomplete work early.
- If you're not going to be able to spend much time on something then say
- so. If you invite cooperation maybe someone will implement it for you!
-
-
- _______________________________________________________________________
-
- 2) Perl Core Modules and Perl Language Extensions
-
- Name DSLI Description Info
- ----------- ---- -------------------------------------------- -----
- CORE Suc Internal base class for native functions
- UNIVERSAL Suc Internal universal base-class
- AutoLoader Sup Automatic perl module method loader
- DynaLoader Suc Dynamic loader for shared libraries
- Exporter Sup Implements default import method for modules
- Carp Sup Throw exceptions outside current package
- Config Sup Stores details of perl build configuration
- English Sup Defines English names for special variables
- strict Sup Controls averments (similar to pragmas)
- integer Sup Controls float vs. integer arithmetic
- less Sup Controls optimisations: 'use less memory;'
- subs Sup "use subs qw(x y)" is short for "sub x; sub y;"
- sigtrap Sup For trapping an abort and giving a traceback
- TieHash Sup Base class for implementing tied hashes
-
- Multithreading for Perl:
-
- Plthread i Multithreading at Perl level (not O/S level) MICB
-
-
- _______________________________________________________________________
-
- 3) Development Support
-
- Name DSLI Description Info
- ----------- ---- -------------------------------------------- -----
- AutoSplit Supf Splits modules into files for AutoLoader
- Benchmark Supf Easy way to time fragments of perl code
- AddINC adpf Easy way to manipulate @INC via use GBARR
- DoWhatIWant i Does what you want without even asking
-
- ExtUtils::
- ::MakeMaker SupO Writes Makefiles for extensions
- ::DynaGlue i Utilities/glue code for C<->Perl interfaces
-
- Test::
- ::Harness Sup Executes perl-style tests
-
- Devel::
- ::DProf bdcf Execution profiler (excellent) DMR
- ::Peek adcf Interface to internal sv_dump and sv_peek
- ::Debug i Function and class debugging support
-
-
- _______________________________________________________________________
-
- 4) Operating System Interfaces
-
- Name DSLI Description Info
- ----------- ---- -------------------------------------------- -----
- POSIX SupO An interface to most (all?) of POSIX.1
- Fcntl Sdcf Defines fcntl() constants (see File::Lock) JHI
- Ioctl adcf Defines ioctl() constants KJALB
- Errno i Constants from <errno.h> EACCES, ENOENT etc JHI
-
- BSD::
- ::Remote adpf getrusage(), s/getrlimit(), s/getpriority() JHI
- ::HostIdent adpf s/gethostname(), s/gethostid() JHI
-
- Sys::
- ::Hostname Supf Implements a portable hostname function
- ::Syslog Supf Provides same functionality as BSD syslog
- ::AlarmCall Rupf Timeout on any sub. Allows nested alarms JACKS
-
- MSDOS::
- ::SysCalls adcf MSDOS interface (interrupts, port I/O) DMO
-
- SGI::
- ::SysCalls cdcf Interface to SGI-specific system calls AMOSS
- ::GL adcr Interface to SGI's Iris GL library AMOSS
- ::FM adcr Interface to SGI's Font Management library AMOSS
-
- VMS::
- ::SysCalls i Interface to VMS-specific system calls CBAIL
- ::Filespec Sdcf Interconvert VMS and Unix file name syntax CBAIL
-
-
- _______________________________________________________________________
-
- 5) Networking, Device Control (modems) and InterProcess Communication
-
- Name DSLI Description Info
- ----------- ---- -------------------------------------------- -----
- Socket Sucf Defines all socket-related constants
-
- Net::
- ::Ping Supf Implements TCP/IP ping (currently only echo) PMQS
- ::IRC i Internet Relay Chat interface MRG
- ::FTP idpf Implements File Transfer Protocol interface GSPAF
- ::Telnet i
- ::SOCKS i TCP/IP access through firewalls using SOCKS WSCOT
- ::NIS cdcO Interface to Sun's NIS RIK
- ::NISPlus cdcO Interface to Sun's NIS+ RIK
-
- Net::
- ::Gen adcO Generic support for socket usage SPIDB
- ::Inet adcO Internet (IP) socket usage SPIDB
- ::TCP adcO TCP-specific socket usage SPIDB
- ::UDP cdcO UDP-specific socket usage SPIDB
- ::Dnet cdcO DECnet-specific socket usage SPIDB
-
- IPC::
- ::Open2 Supf
- ::Open3 Supf
- ::Chat2 ? Out-of-service during refit!
- ::SysV i shared memory, semaphores, messages etc JHI
- ::Mmap adcf Interface to Unix's mmap() shared memory MICB
-
- RPC::
- ::ONC i Open Network Computing (Sun) RPC interface PKUTS
- ::DCE i Distributed Computing Environment (OSF) RPCs
-
- Chat2 adpf Basic port of chat2.pl (see also IPC::Chat2) GBARR
-
- Proxy adpO Transport-independent remote processing MICB
- Proxy::
- ::Tk aucO Tk transport class for Proxy (part of Tk) MICB
-
- ToolTalk adcr Interface to the ToolTalk messaging service MARCP
-
-
- _______________________________________________________________________
-
- 6) Data Types and Data Type Utilities (see also Database Interfaces)
-
- Name DSLI Description Info
- ----------- ---- -------------------------------------------- -----
- Math::
- ::BigInt SupO Arbitrary size integer math package MARCB
- ::BigFloat ?
- ::BigRat ?
- ::Complex adpO Complex number data type DNAD
- ::IEEE i Interface to ANSI/IEEE Std 754-1985 funcs
- ::Pari adcf Interface to the PARI library ILYAZ
-
- Array::
- ::Vec idp Implement array using vec() LWALL
- ::Substr idp Implement array using substr() LWALL
- ::Virtual idp Implement array using a file LWALL
-
- Set::
- ::Scalar adpO Implement Set of scalars (inc references) JHI
-
- Date::
- ::GetDate adcf Yacc based free-format date parser in C TOMC
- ::GetDate adpf Byacc based free-format date parser in Perl GBARR
- ::CTime adpf Updated ctime.pl with mods for timezones GBARR
- ::Time idpO Lightweight normalised datetime data type TIMB
- ::Interval idpO Lightweight normalised interval data type TIMB
-
- Time::
- ::Local Supf Implements timelocal() and timegm()
- ::Time adcf High resolution timers and time-of-day JHI
-
- Tie::
- ::SubstrHash RdpO Very compact hash stored in a string LWALL
- ::ShiftSplice i Defines shift et al in terms of splice LWALL
- ::Mem adcO Bind perl variables to memory addresses PMQS
- ::File adpr Tie hash to files in a directory AMW
- ::Quick i Simple way to create ties TIMB
- ::Watch i Uses Tie::Quick to watch a variable TIMB
-
- Class::
- ::Behavior adpf General behavior methods for classes JACKS
- ::Eroot bdpO Eternal Root - Object persistence DMR
- ::Template bdpr Struct/member template builder DMR
-
- Stats::
- ::Basic RdpO Basic statistical methods JKAST
-
-
- _______________________________________________________________________
-
- 7) Database Interfaces (see also Data Types)
-
- Name DSLI Description Info
- ----------- ---- -------------------------------------------- -----
- DBI amcO Generic Database Interface (see DBD modules) DBPRL
- DBD::
- ::Oracle amcO Oracle Driver for DBI TIMB
- ::Ingres cmcO Ingres Driver for DBI TIMB
- ::Msql cdcO Msql Driver for DBI ANDK
- ::DB2 cdcO DB2 Driver for DBI MHM
- ::Sybase idcO Sybase Driver for DBI MEWP
-
- Oraperl ampf Oraperl emulation interface for DBD::Oracle TIMB
- Ingperl cmpf Ingperl emulation interface for DBD::Ingres TIMB
-
- Sybase::
- ::DBlib adcO Sybase DBlibrary interface MEWP
- ::Sybperl adcf sybperl 1.0xx compatibility module MEWP
- ::CTlib cdcO Sybase CTlibrary intgerface MEWP
-
- Msql adcf Mini-SQL, a light weight SQL database ANDK
-
- Tied Hash File Interfaces:
-
- NDBM_File Suc Tie to NDBM files
- DB_File Suc Tie to DB files PMQS
- GDBM_File Suc Tie to GDBM files
- SDBM_File Suc Tie to SDBM files
- ODBM_File Suc Tie to ODBM files
- AnyDBM_File Sup Uses first available *_File module above
- DBZ_File adc Tie to dbz files (mainly for news history) IANPX !
-
- AsciiDB adp Generic text database parsing MICB
- Stanza adp Text format database used by OSF and IBM JHI
-
- DTREE cdcf Interface to Faircom DTREE multikey isam db JWAT
-
-
- _______________________________________________________________________
-
- 8) User Interfaces (Character and Graphical)
-
- Name DSLI Description Info
- ----------- ---- -------------------------------------------- -----
- Term::
- ::Cap Supf Basic termcap: Tgetent, Tputs, Tgoto
- ::Info adpf Terminfo interface (currently just Tput) KJALB
- ::Complete Supf Tab word completion using stty raw
- ::Readline adc GNU Readline, history and completion KJALB
- ::Control idpf Basic curses-type screen controls (gotxy) KJALB
- ::Read cdcf Terminal reading functions (getkey) KJALB
- ::Pseudo i Pseudo terminal (pty) functions
-
- Major X-Windows User Interface Tools:
-
- Tk bmcO Object oriented version of Tk v4 TKML
- Sx adc Simple Athena widget interface FMC
- Motif cdcf Simple Motif and Xt interface ERICA
- Wcl i Interface to the Widget Creation Library TOMH
- Fresco cd+O Interface to Fresco (post X11R6 version) BPETH
-
- Major Character User Interface Tools:
-
- Curses adcO Character screen handling and windowing WPS
- Cws i Curses Windowing System (OO widgets etc.) MICB
- PV bmpO Curses Windowing System (OO widgets etc.) PVML
-
-
- _______________________________________________________________________
-
- 9) Interfaces to / Emulations of Other Programming Languages
-
- Name DSLI Description Info
- ----------- ---- -------------------------------------------- -----
- Tcl RdcO Complete access to Tcl MICB
- ::Tk RdcO Complete access to Tk *via Tcl* MICB
-
- Language::
- ::Prolog adpO An implementation of Prolog JACKS
-
- SICStus adcO Interface to SICStus Prolog Runtime CBAIL
-
-
- _______________________________________________________________________
-
- 10) File Names, File Systems, File Locking and File Handles
-
- Name DSLI Description Info
- ----------- ---- -------------------------------------------- -----
- File::
- ::Path Supf File path and name utilities
- ::Basename Supf Return basename of a filename
- ::CheckTree Supf Check file/dir tree against a specification
- ::Find Supf Call func for every item in a directory tree
- ::Lock adcf File locking using flock() and lockf() JHI
- ::KGlob cdcf Filename globing (ksh style) TYEMQ
- ::Attrib idpO Get/set file attributes (stat) TYEMQ
-
- Cwd Supf Current working directory functions
- FileHandle SupO File handle manipulation functions
-
-
- _______________________________________________________________________
-
- 11) Text Processing, Parsing and Searching
-
- Name DSLI Description Info
- ----------- ---- -------------------------------------------- -----
- Text::
- ::Abbrev Supf Builds hash of all possible abbreviations
- ::ParseWords Supf Parse strings containing shell-style quoting
- ::Soundex Supf Convert a string to a soundex value
- ::TeX cdpO TeX typesetting language input parser ILYAZ
- ::Trie adpf Find common heads and tails from strings ILYAZ
-
- Search::
- ::Dict Supf Search a dictionary ordered text file
-
- SGML::
- ::Element cdpO Build a SGML element structure tree LSTAF
- ::SP cd+O Interface to James Clark's Sp SGML parser DFD
-
-
- _______________________________________________________________________
-
- 12) Option, Argument, Parameter and Configuration File Processing
-
- Name DSLI Description Info
- ----------- ---- -------------------------------------------- -----
- Getopt::
- ::Std Supf Implements basic getopt and getopts
- ::Long Supf Advanced option handling JV
- ::Gnu adcf GNU form of long option handling WSCOT
-
- Usage Rupr Type and range checking on subroutine args JACKS
-
- ConfigReader cdpO Read directives from configuration file AMW
-
-
- _______________________________________________________________________
-
- 13) Internationalization and Locale
-
- Name DSLI Description Info
- ----------- ---- -------------------------------------------- -----
- I18N::
- ::Collate bdpr Locale based comparisons JHI
- ::WideMulti i Wide and multibyte character string JHI
-
-
- _______________________________________________________________________
-
- 14) + Security and Encryption
-
- Name DSLI Description Info
- ----------- ---- -------------------------------------------- -----
- DES adcf DES encryption (libdes) EAYNG
- Des adcf DES encryption (libdes) MICB
- MD5 adcf MD5 message digest algorithm NWINT !
- Kerberos adcf Kerberos IV authentication MICB
- GSS i Generic Security Services API (RFC ????)
-
-
- _______________________________________________________________________
-
- 15) World Wide Web, HTML, HTTP, CGI, MIME etc (see Text Processing)
-
- Name DSLI Description Info
- ----------- ---- -------------------------------------------- -----
- URI::
- ::URL RmpO Uniform Resource Locator objects LWWWP
-
- CGI::
- ::Base bmpO Complete HTTPD CGI Interface class CGIP
- ::MiniSvr ampO Fork CGI app as a per-session mini server CGIP
- ::Request bmpO Parse CGI request and handle form fields CGIP
- ::Form ampf Form tools for interactive pages MGH
- ::UnixSocket cmcf Runs cgi in background through unix socket AMW
-
- HTML::
- ::* i
-
- HTTP::
- ::* i
-
- WWW::
- ::HTTP cmpO Implement HyperText Transfer Protocol LWWWP
- ::Log i Parse Common Log File Format
- ::Robots i Parse /robots.txt file
-
- MIME::
- ::Header i Parse / construct MIME headers
- ::Handler i Base class for MIME content handlers
- ::Object i Base class for MIME decoded objects
-
-
- _______________________________________________________________________
-
- 16) Server and Daemon Utilities
-
- Name DSLI Description Info
- ----------- ---- -------------------------------------------- -----
- Server Hierarchy of generic server classes
-
- Server::Configs::
- ::BasicConfig RupO Configuration template class for servers JACKS
-
- Server::Initialize::
- ::Functions Rupf Utility functions for initializing servers JACKS
- ::Daemon Rupr Intializing a daemon server JACKS
- ::Pipe Rupr Intializing a server being piped to JACKS
- ::InetdService Rupr Intializing a server started from inetd JACKS
-
- Server::Server::
- ::EventDriven RupO Triggers objects on i/o, timers & interrupts JACKS
-
- Server::Echo::
- ::MailPipe cup A process which accepts piped mail JACKS
- ::TcpDForking cup TCP daemon which forks clients JACKS
- ::TcpDMplx cup TCP daemon which multiplexes clients JACKS
- ::TcpISWFork cup TCP inetd wait process, forks clients JACKS
- ::TcpISWMplx cup TCP inetd wait process, multiplexes clients JACKS
- ::TcpISNowait cup TCP inetd nowait process JACKS
- ::UdpD cup UDP daemon JACKS
- ::UdpIS cup UDP inetd process JACKS
-
- Server::Inet::
- ::Functions cdpf Utility functions for Inet socket handling JACKS
- ::Object cupO Basic Inet object JACKS
- ::TcpClientObj cupO A TCP client (connected) object JACKS
- ::TcpMasterObj cupO A TCP master (listening) object JACKS
- ::UdpObj cupO A UDP object JACKS
-
- Server::FileQueue::
- ::Functions cupf Functions for handling files and mailboxes JACKS
- ::Object cupO Basic object JACKS
- ::DirQueue cupO Files queued in a directory JACKS
- ::MboxQueue cupO Mail queued in a mail box JACKS
-
- Server::Mail::
- ::Functions cupf Functions for handling files and mailboxes JACKS
- ::Object cupO Basic mail object JACKS
-
-
- _______________________________________________________________________
-
- 17) Archiving and Compression
-
- Name DSLI Description Info
- ----------- ---- -------------------------------------------- -----
- Zip cdcf Interface to the Info-Zip zlib library PMQS
-
-
- _______________________________________________________________________
-
- 18) + Image, Pixmap and Bitmap Manipulation
-
- Name DSLI Description Info
- ----------- ---- -------------------------------------------- -----
- PixDraw cdcO Drawing and manipulating true color images KSB +
-
-
- _______________________________________________________________________
-
- 19) Miscellaneous Interfaces to Other Software Systems
-
- Name DSLI Description Info
- ----------- ---- -------------------------------------------- -----
- Mail::
- ::SMTP i Protocol support including expn
- ::RFC822 adpf Functions for RFC822 address manipulations GBARR
- ::MH adcr MH mail interface MRG
- ::Send i Simple interface for sending mail
-
- News::
- ::NNTPClient adpO Support for clients of NNTP servers RVA
-
- WAIS Rdcf Interface to the freeWAIS-sf libraries ULPFR
- Pcap i An interface for LBL's packet capture lib AMOSS
-
- Nexus cdcO Interface to Nexus (threads/ipc/processes) RDO
-
-
- =======================================================================
-
-
- Part 3 - Big Projects Registry
- ==============================
-
-
- 1) Introduction
-
- This section of the Module List is devoted to listing "Big Projects".
- I don't want to define Big (or even Project) here. I hope the items
- below speak for themselves. Almost all are just ideas, though some have
- been dabbled with.
-
- These are ideas for people with very strong skills and lots of time.
- Please talk, and listen, to Larry _before_ starting to do any work on
- projects which relate to the core implementation of Perl.
-
- Ask not when these will be implemented but ask how you can help
- implement them.
-
-
- 2) Items in the Todo File
-
- The Todo supplied with Perl lists over 60 items in categories ranging
- from "Would be nice to have" to "Vague possibilities".
-
- Contacts: LWALL P5P
-
-
- 2) Perl Compiler
-
- Part of the design of Perl 5 was to make it possible to write a
- compiler for it. It's a possible master's thesis topic.
-
- Related to this is the ability to save and load a 'flat' byte-code
- representation of the compiled perl code.
-
- Note that three different prototype Tcl compilers have recently been
- announced in the comp.lang.tcl group! Anyone interested in this should
- take a good look at the Java language from Sun http://java.sun.com/.
-
- Contacts: LWALL P5P
-
-
- 3) Multi-threading
-
- This is really two projects. True threads (e.g., POSIX) using multiple
- independant perl interpreter structures and simple timeslicing of
- 'tasks' within a single perl interpreter. True threads requires
- operating system support or an external thread library, simple
- timeslicing does not (and should be portable to all platforms).
-
- Contacts: LWALL MICB P5P
-
-
- 4) Safe Perl
-
- A mechanism to allow unknown/insecure perl code to be compiled and
- executed in a finely controlled manner. An eventual aim is to enable
- Perl Objects (data+code) to travel between applications (possibly
- across networks). Similar to the existing Safe-Tcl.
-
- Contacts: LWALL MICB P5P
-
-
- 5) Object Management Group Interface Definition Language
-
- OMG's (Object Management Group) CORBA 1.1 (Common Object Request Broker
- Architecture) specification provides the standard interface definition
- between OMG-compliant objects. IDL (Interface Definition Language) is
- the base mechanism for object interaction. The SunSoft OMG IDL CFE
- (Compiler Front End) provides a complete framework for building CORBA
- 1.1-compliant preprocessors for OMG IDL. To use SunSoft OMG IDL CFE,
- you must write a back-end; full instructions are included. A complete
- compiler of IDL would translate IDL into client side and server side
- routines for remote communication in the same manner as the currrent
- Sun RPCL compiler. Several companies including Sunsoft are building
- back ends to the CFE which translate IDL into target languages, e.g.
- Pascal or C++, in the context of planned CORBA-compliant products.
-
- Contacts: idl-cfe@sun.com, ftp://omg.org/pub/OMG_IDL/
-
-
- 7) Expand Tied Array Interface
-
- LEN, PUSH, POP, SHIFT, UNSHIFT and a fallback to SPLICE are needed.
- Complicated by very widespread use of arrays within perl internals.
-
- Contacts: LWALL P5P
-
-
- 8) Tied File Handles
-
- It is a long term goal to allow perl file handles to be tied.
-
- Contacts: PMQS P5P LWALL
-
-
-
- =======================================================================
-
-
- Part 4 - Who's Who and What's Where
- ===================================
-
-
- 1) Information / Contact Reference Details (in alphabetical order)
-
- Ref Contact Details
- ----- --------------------------------------------------------------
- AMOSS Amos Shapira <amoss@cs.huji.ac.il>
- AMW Andrew Wilcox <awilcox@world.std.com>
- ANDK Andreas Koenig <k@otto.ww.TU-Berlin.DE>
- BBUM Bill Bumgarner <bbum@friday.com>
- BPETH Bill Petheram <petheram@acm.org>
- CBAIL Charles Bailey <bailey@genetics.upenn.edu>
- CGIP The CGI-Perl Developers mailing list <CGI-perl@webstorm.com>
- DBPRL DBperl mailing list. <perldb-interest@vix.com>
- DFD Dominic Dunlop <dominic@natcorp.ox.ac.uk>
- DMO Darryl Okahata <darrylo@sr.hp.com>
- DMR Dean Roehrich <roehrich@cray.com>
- DNAD Dave Nadler <nadler@apphpp2>
- EAYNG Eric Young <eay@mincom.oz.au>
- ERICA Eric Arnold <Eric.Arnold@corp.sun.com>
- FMC Frederic Chauveau <fmc@pasteur.fr>
- GBARR Graham Barr <Graham.Barr@tiuk.ti.com>
- GSPAF Gene Spafford <spaf@cs.purdue.edu>
- IANPX Ian Phillipps <ian@pipex.net>
- ILYAZ Ilya Zakharevich <ilya@math.ohio-state.edu>
- JACKS Jack Shirazi <js@biu.icnet.uk>
- JHI Jarkko Hietaniemi <Jarkko.Hietaniemi@hut.fi>
- JKAST Jason Kastner <jason@wagner.com>
- JV Johan Vromans <jv@inter.NL.net>
- JWAT John Watson <jwatson@cnj.digex.net>
- KJALB Kenneth Albanowski <kjahds@kjahds.com>
- + KSB Simon Berg <karl@it.kth.se>
- LSTAF Lennart Staflin <lenst@lysator.liu.se>
- LWALL Larry Wall. Author of Perl. Busy man. <lwall@netlabs.com>
- LWWWP libwww-perl mailing list <libwww-perl@ics.uci.edu>
- ! MARCB Marc Biggar <mab@wdl.loral.com>
- MARCP Marc Paquette <Marc.Paquette@crim.ca>
- MEWP Michael Peppler <mpeppler@itf.ch>
- MGH Marc Hedlund <march@europa.com>
- MHM Mike Moran <mhm@austin.ibm.com>
- MICB Malcolm Beattie <mbeattie@sable.ox.ac.uk>
- MRG Matthew Green <mrg@mame.mu.oz.au>
- NI-S Nick Ing-Simmons <nik@tiuk.ti.com>
- NWINT Neil Winton <nwinton@axion.bt.co.uk>
- PKUTS Peter Kutschera <peter@zditr1.arcs.ac.at>
- PMQS Paul Marquess <pmarquess@bfsec.bt.co.uk>
- P5P The Perl5 Porters Mailing List <perl5-porters@nicoh.com>
- PVML Perl Vision Mailing List <pvision@netropolis.org>
- RDO Robert Olson <olson@mcs.anl.gov>
- RIK Rik Harris <rik.harris@fulcrum.com.au>
- RVA Rodger Anderson <rodger@boi.hp.com>
- SPIDB Spider Boardman <spider@orb.nashua.nh.us>
- TKML Tk Mailing list <ntk@franz.ww.tu-berlin.de>
- TOMC Tom Christiansen <tchrist@mox.perl.com>
- TOMH Tom Horsley <tom@ssd.csd.harris.com>
- TIMB Tim Bunce <Tim.Bunce@ig.co.uk>
- TYEMQ Tye McQueen <tye@metronet.com>
- UCLP Usenet: comp.lang.perl, always a good place to enquire
- ULPFR Ulrich Pfeifer <pfeifer@woodstock.informatik.uni-dortmund.de>
- WPS William Setzer <setzer@math.ncsu.edu>
- WSCOT Wayne Scott <wscott@ichips.intel.com>
-
-
- 2) Perl Frequently Asked Questions (FAQ) Files
-
- Perl Meta-FAQ on the World Wide Web (WWW)
- http://www.khoros.unm.edu/staff/neilb/perl/metaFAQ
- http://www.cse.unsw.edu.au/perl/metaFAQ.html
- http://web.nexor.co.uk/perl/Meta-FAQ.txt
-
- Perl FAQ
- ftp://rtfm.mit.edu/pub/usenet/news.answers/perl-faq/
- ftp://ftp.uu.net/usenet/news.answers/perl-faq/
- ftp://ftp.cis.ufl.edu/pub/perl/doc/FAQ
- ftp://ftp.khoros.unm.edu/pub/perl/faq.gz
- ftp://ftp.cs.ruu.nl/pub/NEWS.ANSWERS/perl-faq/
- ftp://ftp.funet.fi/pub/languages/perl/doc/faq
- ftp://src.doc.ic.ac.uk/packages/perl/FAQ
-
-
- 3) ! Some Perl Archives
-
- ftp://ftp.cdrom.com:/pub/perl # mirrors many other perl archives
- ftp://coombs.anu.edu.au:/pub/perl
- ftp://ftp.cbi.tamucc.edu/pub/duff/Perl
- ftp://ftp.cis.ufl.edu/pub/perl
- ftp://ftp.cs.ruu.nl/pub/PERL
- ftp://ftp.demon.co.uk/pub/perl
- ftp://ftp.funet.fi/pub/languages/perl
- ftp://ftp.khoros.unm.edu/pub/perl
- ftp://ftp.metronet.com:/pub/perl
- ftp://ftp.uu.net/languages/perl
- ftp://ftp.wpi.edu:/perl5
- ftp://ftp.zrz.tu-berlin.de/pub/unix/perl
- ftp://perl.com/pub/perl
- ftp://src.doc.ic.ac.uk/packages/perl
- ftp://src.doc.ic.ac.uk/packages/perl5
- ftp://sungear.mame.mu.oz.au/pub/perl
-
- End.
-